<?php
require_once '../core/app_global_vars.php';
require_once '../core/app_global_metods.php';
require_once '../core/libs/pdf/dompdf_config.inc.php';
require_once '../core/libs/qr/qrlib.php';
/*Definicion del diccionario de los datos remplazables en el template*/
$diccionario=array(
    #Definicion de Subtitulos para las vistas referenciado por la **constante vista
    'subtitle'=>array( VIEW_GET_ARTICULO=>'Datos del Articulo',
                       VIEW_SET_ARTICULO=>'Nuevo Articulo',
                       VIEW_DELETE_ARTICULO=>'Eliminar Articulo',
                       VIEW_EDIT_ARTICULO=>'Editar Articulo',
                       VIEW_SEARCH_ARTICULO=>'Busqueda Articulo',
                       VIEW_LIST_ARTICULO=>'Listado de Articulos',
                       VIEW_ADD_COMPONENT=>'Agregado de Componentes',
                       VIEW_RESG_ARTICULO=>'Resguardo'),
    #Definicion de direccion de accion de formulario*/
    'form_action'=>array('GET'=>'/STControlEquipo/'.MODULO.GET_ARTICULO.'/',
                         'SET'=>'/STControlEquipo/'.MODULO.SET_ARTICULO.'/',
                         'DELETE'=>'/STControlEquipo/'.MODULO.DELETE_ARTICULO.'/',
                         'EDIT'=>'/STControlEquipo/'.MODULO.EDIT_ARTICULO.'/',
                         'LIST'=>'/STControlEquipo/'.MODULO.LIST_ARTICULO.'/',
                         'LISTC'=>'/STControlEquipo/'.MODULO.LIST_COMPONENT.'/',
                         'ADD'=>'/STControlEquipo/'.MODULO.ADD_COMPONENT.'/'),
    'title_form'=>array( VIEW_LIST_ARTICULO=>'Listado de Equipos Activos')
    );
$mihtml;

/*obtiene el contenido del archivo template $form toma valor default si no se le asigna*/ 
function get_template($form='get'){
    $file='../site_media/html/articulo_'.$form.'.html';
    $template=  file_get_contents($file);
    return $template;
}
/*obtiene el contenido del archivo para elementos generarles de la aplicacion*/
function get_apptemplate($form=''){
    $file='../site_media/html/application_'.$form.'.html';
    $template=  file_get_contents($file);
    return $template;
}
/*remplaza los datos dinamicos en la plantilla desde el array diccionario seleccionado*/
function render_dinamic_data($html,$data){
    foreach ($data as $clave => $valor) {
        //debug('clave:'.$clave.' valor:'.$valor."</br>");
        if(!is_array($valor))
        $html=  str_replace('{'.$clave.'}', $valor, $html);
    }
    return $html;
}
#funcion auxiliar para el recorrido del array como tabla
function recorre($array){
    global $mihtml;
    foreach ($array as $key => $value) {
        if(is_array($value)){
            if(empty($mihtml))$mihtml='<tr>';
            else $mihtml.='<tr>';
            recorre($value);
            $mihtml.='</tr>';
          }
          else{
              if(strpos($key,'nId')!==false){
                  /*para nombrado unico de radio con nombre del articulo*/
                 $mihtml.= 
                           '<td class="resulsetradio"><input type="radio" id="rad_'.strtolower($key).$value.'"  name="rad_'.strtolower($key).'" value="'.$value.'" />
                               <label for="rad_'.strtolower($key).$value.'">'.$array["sDescripcion"].'</label> 
                           </td>';
              }else
                  {
                    if(strpos($key,'sDesc')!==false){}/*omision de la descripcion por q ya aparece en la etiqueta del radio*/
                    else $mihtml.='<td>'.$value.'</td>';
                  }
          }
    }
}
#funcion auxiliar establece los datos como una tabla de elementos seleccionables
function render_as_table($html,$data,$index=''){
    #en caso de q se llame desde un ciclo el primer resultset se remplazara asi
    if($index==0)$index='';
    global $mihtml;
    if(empty($mihtml))$mihtml='';
    $mihtml='<thead><tr><th></th>';
    $count=1;
    foreach ($data[0] as $key => $value) {
        if($count==1||$count==2){}
        else $mihtml.='<th>'.$key.'</th>';
        $count++;
    }
    $mihtml.='</tr></thead>';
    recorre($data);
    $html=  str_replace('{resultset'.$index.'}', $mihtml, $html);
    $mihtml="";
    return $html;
}
#funcion auxiliar devuelve un dropdownlist
function render_as_dropdown($html,$data,$dropname){
    $result= "<select name = '$dropname'>";
    foreach ($data as $key => $value) {
        $result.="<option value='$value[0]'>$value[1]</option>";
    }
    $result.="</select>";
    $html=  str_replace('{'.$dropname.'}', $result, $html);
    return $html;
}
#retorna la interfaz
function return_view($vista,$data=array(),$controls=array()){
    global $diccionario;
    global $global_dictionary;
    $resultset=array();
    #obtiene el html del template general
    $html=  get_template('template');
    # feature!verifica si se accedio desde dispositivo movil
//    if(ismobilebrowser()){
//       $html=  str_replace('{mobile_script}',JQMOBILE_SCRIPT,$html); 
//    }
//    else{
//        $html=  str_replace('{mobile_script}',"",$html);
//    }
    #remplaza el subtitulo en el template general basado en el nombre de la vista
    $html=  str_replace('{subtitulo}', $diccionario['subtitle'][$vista],$html);
    
    #si se recibe tambien un resultset ademas de los datos basicos de la interfaz
    if(array_key_exists('resultset', $data) && array_key_exists('data', $data)){
        #un unico resulset
        $resultset=$data['resultset'];
        $data=$data['data'];
    }
   
    if(!isset($_SESSION)) {session_start();}
    if($_SESSION['Registered']==1)
        $html=  str_replace('{menu}',  get_apptemplate('adm_menu'),$html);
        else
        $html=  str_replace('{menu}',  get_apptemplate('menu'),$html);

    
    #remplaza el formulario segun la vista
    $html=  str_replace('{formulario}', get_template($vista),$html);
    # !feature altera el nombre del script para moviles y tablets
//    if(ismobilebrowser()){
//       $html=  str_replace('{is_mobile}','mob_',$html); 
//    }
//    else{
//        $html=  str_replace('{is_mobile}','',$html);
//    }
    #remplaza la accion del formulario cargado
    $html=  render_dinamic_data($html, $diccionario['form_action']);
    #remplaza el titulo del form en el template general basado en el nombre de la vista
    if(array_key_exists($vista, $diccionario['title_form'])){
    $html=  str_replace('{titulo_form}', $diccionario['title_form'][$vista],$html);}
    else{
        $html=  str_replace('{titulo_form}','',$html);
    }
    #remplaza los links del menu *si existe
    $html=  render_dinamic_data($html, $global_dictionary['links_menu']);
    #remplaza los datos para el formulario si existen
    $html=  render_dinamic_data($html,$data);
    
    #render del mensaje
    if(array_key_exists('mensaje', $data)) $mensaje=$data['mensaje'];
    else $mensaje='';
    $html=  str_replace('{mensaje}',$mensaje,$html);
    
    if(!empty($resultset)){
        //multiple resulset resulset,resulset1,...
        if(array_key_exists('resultset', $resultset)){
            $numofarrays = count(array_unique($resultset, SORT_REGULAR));
            for ($i=0;$i<$numofarrays;$i++){
                $rm=$i;
                if($i==0)$rm='';
                if(count($resultset['resultset'.$rm])>=1){
                    $html= render_as_table($html,$resultset['resultset'.$rm],$i);
                    $html=  str_replace('{disable}','',$html);
                }
                else{
                    $html=  str_replace("{resultset$rm}",'No data',$html);
                    $html=  str_replace('{disable}','disabled="disabled"',$html);
                }
            }
            //$html=  str_replace('{disable}','',$html);
        }
        else{
                //simpleresultset
                $html= render_as_table($html,$resultset);
                $html=  str_replace('{disable}','',$html);
            }
        }
    else{
        $html=  str_replace('{resultset}','No data',$html);
        $html=  str_replace('{disable}','disabled="disabled"',$html);
     }
    //si existen controles para la interfaz tipo list
    if(!empty($controls)){
        foreach ($controls as $key => $value) {
            $html=  render_as_dropdown($html, $value, $key);
        }
    }
    if($vista==VIEW_ADD_COMPONENT){
        if(array_key_exists('nIdArticulo', $data)){
            $html=  str_replace('{val_nidarticulo}',$data['nIdArticulo'],$html);
            $html=  str_replace('{val_sdescripcion}',$data['sDescripcion'],$html);
        }
    }
    
    if($vista==VIEW_EDIT_ARTICULO){ //remplaza elementos que requieren tratado especial 
        
        if(array_key_exists('nIdArticulo', $data)) $tmpdata=$data['nIdArticulo'];
        else $tmpdata='';
        $html=  str_replace('{val_nidarticulo}',$tmpdata,$html);
 
        if(array_key_exists('sEstado', $data)) $tmpdata=$data['sEstado'];
        else $tmpdata='';
        $html=  str_replace('{val_sestado}',$tmpdata,$html);
        //checkbox
        if(array_key_exists('bActivo', $data)){
            if($data['bActivo']==1)
            $tmpdata='<input id="chbx_bactivo" type="checkbox" name="chbx_bactivo" value="1" checked="checked"/>';
            else
            $tmpdata='<input id="chbx_bactivo" type="checkbox" name="chbx_bactivo" value="0" />';
            
        $html=  str_replace('{val_bactivo}',$tmpdata,$html);}
        
        if(array_key_exists('bComponente', $data)){
            if($data['bComponente']==1)
            $tmpdata='<input id="chbx_bcomponente" type="checkbox" name="chbx_bcomponente" value="1" checked="checked"/>';
            else
            $tmpdata='<input id="chbx_bcomponente" type="checkbox" name="chbx_bcomponente" value="0" />';
            
        $html=  str_replace('{val_bcomponente}',$tmpdata,$html);}

        if(array_key_exists('sImages', $data)){
            if(count($data['sImages'])>0){
                $pathimages = "/STControlEquipo/site_media/img/articulos/".$data['nIdArticulo']."PHOTOS/";//Path imagenes mostrables
                $tmpdata='';
                foreach ($data['sImages'] as $key => $value) {
                    $tmpdata.= "<img src = '$pathimages"."$value'"." width = '100' height = '100'/>";
                }
            }
            else $tmpdata='';
        } 
        else $tmpdata='';
        $html=  str_replace('{val_images}',$tmpdata,$html);
        
        }
        if($vista==VIEW_RESG_ARTICULO){
            
            //para enviar imagenes al reporte
            if(array_key_exists('sImages', $data)){
                if(count($data['sImages'])>0){
                $pathimages = "STControlEquipo/site_media/img/articulos/".$data['nIdArticulo']."PHOTOS/";//Path imagenes mostrables
                $tmpdata='';
                foreach ($data['sImages'] as $key => $value) {
                    $tmpdata.= "<img class='archimg' src = '$pathimages"."$value'"." height = '150'/></br>";
                    }
                }else $tmpdata='';
            } else $tmpdata="";
            $html=  str_replace('{val_images}',$tmpdata,$html);
            //-----------------------------------------
            
            if(array_key_exists('bActivo', $data))
            {
               $tmpdata=$data['bActivo'];
               if($tmpdata==1){
                   $html=  str_replace('{val_sbaja}','ACTIVO',$html);
                   $html=  str_replace('{val_dfechabaja}','--',$html);
               }
               else{
                   $html=  str_replace('{val_sbaja}','BAJA',$html);
                   $html=  str_replace('{val_dfechabaja}',$data['dFechaBaja'],$html);
               }
            }
            
            //creacion del QR
            if(array_key_exists('val_scodebar', $data)) $contentqr=$data['val_scodebar'];
            else $contentqr='No_code_bar';

              $tempDir ='\\wamp\\www\\STControlEquipo\\site_media\\img\\articulos\\'.$data['nIdArticulo']."PHOTOS\\";
              if(!file_exists($tempDir))mkdir ($tempDir);
              $fileName = 'QR'.$data['nIdArticulo'].'.png'; 
              $pngAbsoluteFilePath = $tempDir.$fileName;
              QRcode::png($contentqr, $pngAbsoluteFilePath, QR_ECLEVEL_L, 8, 2);
           
            $html=  str_replace('id="aux_container"','style="display:hidden;"', $html);
            $mipdf = new DOMPDF();
            $mipdf ->set_paper("letter", "landscape");
            $mipdf ->set_base_path("/wamp/www/");//checkPaths
            $mipdf ->load_html(utf8_decode($html));
            $mipdf ->render();
            $mipdf ->stream('ResguardoArticulo.pdf');
        }
    print $html;
}
?>